home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Games of Daze
/
Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso
/
x2ftp
/
msdos
/
source
/
swags-z
/
sorting.swg
/
0047_Sorting.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1994-05-25
|
1KB
|
32 lines
{
DR> Does anyone have a good routine to sort a string array into
DR> alphabetical order - I really only know how to do a bubble
DR> sort, and that's a bit slow for >1000 in the array...
DR> Preferably written in standard Pascal, as I would like to
DR> understand it,
Here's the conventional QuickSort (which is also included in the full
TP/BP packages as examples):
}
var T : string; { swap variable }
GUESS : array[1..1000] of ^string; { pointer array of strings }
procedure L_HSORT (LEFT,RIGHT : word); { Lo-Hi QuickSort }
var LOWER,UPPER,MIDDLE : word;
PIVOT : string;
begin
LOWER := LEFT; UPPER := RIGHT; MIDDLE := (LEFT+RIGHT) div 2;
PIVOT := GUESS[MIDDLE]^;
repeat
while GUESS[LOWER]^ < PIVOT do Inc(LOWER);
while PIVOT < GUESS[UPPER]^ do Dec(UPPER);
if LOWER <= UPPER then
begin
T := GUESS[LOWER]^; GUESS[LOWER]^ := GUESS[UPPER]^;
GUESS[UPPER]^ := T; Inc (LOWER); Dec (UPPER);
end;
until LOWER > UPPER;
if LEFT < UPPER then L_HSORT (LEFT, UPPER);
if LOWER < RIGHT then L_HSORT (LOWER, RIGHT)
end; { L_HSORT }